package com.java.UDP.datagram_socket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/**
 * UDP协议单播发送数据：相当于客户端，无需建立连接也可发送数据。先运行服务端再运行客户端发生数据，查看服务端控制台数据接收情况
 * 单播指客户端将数据发生给局域网内一台确定的主机，该主机的IP地址确定
 */
public class DatagramSocketSend {
    public static void main(String[] args) throws IOException {
        // 创建对象：默认随机绑定可用端口，可通过构造函数传递端口号
        DatagramSocket datagramSocket = new DatagramSocket();
        
        while (true) {
            System.out.println("---------------------------------------------------");
            System.out.println("客户端" + datagramSocket.getLocalPort() + "发送的数据为 ");
            String send = new Scanner(System.in).nextLine();
            if ("再见".equals(send)) {
                break;
            }
            
            // send：发送数据到指定主机的指定端口
            byte[] data = send.getBytes();
            datagramSocket.send(new DatagramPacket(data, data.length, InetAddress.getByName("127.0.0.1"), 8888));
        }
        
        // close：释放资源
        datagramSocket.close();
    }
}
